<?php 
namespace Common\Model;
use Hdphp\Model\Model;
	/**
	 * 用户模型
	 * Hd
	 */
	class Category extends Model{
//		指定模型操作的表
//		protected $table 固定写法
		protected $table='category';
//		自动验证参数
//		 protected $validate
//Array
//(
//  [cname] => 234
//  [pid] => 0
//  [ctitle] => 234
//  [cdes] => 234
//  [csort] => 100
//)
		protected $validate=array(
			array('cname','required','分类名不能为空',3,3)
		);		
//getAll      获取所有数据
//one         获取一条数据
//store       保存数据
//edit        更新数据
//del         删除数据


/**
 * 添加数据
 */

		public function store(){
			if(!$this->create()) return FALSE;
//			如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
			return $this->add();
		}			
//		获取其他类
//		不能是它本身和它的子集
		public function getFdata($data,$cid){
//			找当前传入类的子集
			$cids=$this->getSon($data,$cid);
//			压入它当前的id因为不能包含它当前
			$cids[]=$cid;
//			var_dump($cids);die;			
//			不在$cid中的数据
//			'select * from category not in(5,6,20,21)';
			$result=$this->whereNotIn('cid',$cids)->get();
			return Data::tree($result,'cname');
		}
		
		
//		获得子集的方法
		private function getSon($data,$cid){
			$temp=array();
			foreach($data as $v){
//				如果当前传入的cid找到了对应的子集内容
				if($v['pid']==$cid){
//					把子集压入到一个盒子变量中
					$temp[]=$v['cid'];
//					递归找子集的子集
					$temp=array_merge($temp,$this->getSon($data, $v['cid']));
				}
			}
			return $temp;
		}
/**
 * 编辑方法
 */
		public function edit(){
			if(!$this->create()) return FALSE;
//			如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
//			save()方法中如果post条件中包含主键，自动会修改主键对应的条目
			return $this->save();
//			>where('id',1)->delete();
		}
		
/**
 * 删除方法
 */	
//		删除一个分类将它的子集提上一层
		public function del($cid){
//			public 获得指定的字段       模型类型
//			获得当前请求的cid数据pid
			$pid=$this->where('cid',$cid)->pluck('pid');
//			获取到pid后把它的所有子集的父级id改为pid
			$this->where('pid',$cid)->update(array('pid'=>$pid));
//			删除我点击这一条
			return $this->where('cid',$cid)->delete();
		}
		
		
	}

